﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace FeizBlocker
{
    public partial class FrmPrincipal : Form
    {
        private FrmMaligno _frmMaligno;

        public FrmPrincipal()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void btnLanzarElMaligno_Click(object sender, EventArgs e)
        {
            _frmMaligno = new FrmMaligno();
            _frmMaligno.Show();
            _frmMaligno.Malignus.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Malignus_DocumentCompleted);
        }

        private void tmrBajador_Tick(object sender, EventArgs e)
        {
            _frmMaligno.Malignus.Document.Body.ScrollIntoView(false);
        }

        private void btnBajador_Click(object sender, EventArgs e)
        {
            if (btnBajador.Text == "Bajador")
            {
                btnBajador.Text = "Bajando...";
                tmrBajador.Start();
            }
            else
            {
                btnBajador.Text = "Bajador";
                tmrBajador.Stop();
            }
        }

        private void btnRobar_Click(object sender, EventArgs e)
        {
            HtmlElementCollection usuarios = _frmMaligno.Malignus.Document.Body.GetElementsByTagName("div");

            using (StreamWriter writer = new StreamWriter("Cache.txt", false))
                foreach (HtmlElement item in usuarios)
                    if (item.GetAttribute("className").Equals("fsl fwb fcb"))
                    {
                        if (item.FirstChild == null)
                            continue;

                        HtmlElement link = item.FirstChild;
                        if (link == null)
                            continue;

                        string data = link.GetAttribute("href");
                        if (data == null)
                            continue;

                        writer.WriteLine(data);
                    }

            MessageBox.Show("Usuarios cacheados con éxito", "PIJA", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }


        private Queue<string> _usuarios;

        private void btnBloquear_Click(object sender, EventArgs e)
        {
            _usuarios = new Queue<string>();
            chkBloqueando.Checked = true;

            using (StreamReader reader = new StreamReader("Cache.txt"))
                do
                {
                    _usuarios.Enqueue(reader.ReadLine());
                } while (!reader.EndOfStream);

            EmpezarBloquear();
        }

        private void EmpezarBloquear()
        {
            if (_usuarios.Count == 0)
                return;

            string usuario = _usuarios.Dequeue();

            using (StreamWriter writer = new StreamWriter("AnteUltimo.txt", false))
                writer.WriteLine(usuario);

            _frmMaligno.Malignus.Navigate(usuario);
        }

        private void Malignus_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (chkBloqueando.Checked)
                tmrPreBloquedo.Start();
        }

        private void tmrPreBloquedo_Tick(object sender, EventArgs e)
        {
            tmrPreBloquedo.Stop();
            Bloquear();
        }

        private void Bloquear()
        {
            HtmlElementCollection todosLosDivs = _frmMaligno.Malignus.Document.Body.GetElementsByTagName("div");
            foreach (HtmlElement item in todosLosDivs)
                if (item.GetAttribute("className").Contains("uiPopover"))
                {
                    HtmlElement boton = item.FirstChild;
                    if (boton == null || boton.TagName.ToLower() != "button" || !boton.GetAttribute("value").Equals("1"))
                        continue;

                    boton.InvokeMember("click");
                    break;
                }

            HtmlElementCollection todosLosLinks = _frmMaligno.Malignus.Document.Body.GetElementsByTagName("a");
            foreach (HtmlElement item in todosLosLinks)
                if (item.GetAttribute("href").ToLower().Contains("ajax/privacy/block_user"))
                {
                    item.InvokeMember("click");
                }

            tmrBloqueador.Start();
        }

        private void tmrBloqueador_Tick(object sender, EventArgs e)
        {
            tmrBloqueador.Stop();

            HtmlElementCollection todosLosBotones = _frmMaligno.Malignus.Document.Body.GetElementsByTagName("button");
            foreach (HtmlElement item in todosLosBotones)
                if (item.GetAttribute("className").Contains("layerConfirm uiOverlayButton"))
                    item.InvokeMember("click");

            tmrFinalizarBloqueo.Start();
        }

        private void tmrFinalizarBloqueo_Tick(object sender, EventArgs e)
        {
            tmrFinalizarBloqueo.Stop();
            EmpezarBloquear();
        }
    }
}
